import logging

from Commen import project_path


class MyLog:

    def my_log(self, level, msg):

        # 定义一个自己的日志收集器
        my_logger = logging.getLogger('iBed')
        my_logger.setLevel('INFO')

        # 专属输出渠道过滤渠道和排版
        formatter = logging.Formatter(
            "%(asctime)s - %(levelname)s - %(filename)s - %(name)s - 日志信息:%(message)s")

        # 输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel('INFO')
        ch.setFormatter(formatter)

        # 输出到文件
        fh = logging.FileHandler(project_path.logs, encoding='utf-8')
        fh.setLevel('INFO')
        fh.setFormatter(formatter)

        # 和日志收集器对接起来
        my_logger.addHandler(ch)
        my_logger.addHandler(fh)

        if level == 'DEBUG':
            my_logger.debug(msg)
        elif level == 'INFO':
            my_logger.info(msg)
        elif level == 'WARNING':
            my_logger.warning(msg)
        elif level == 'ERROR':
            my_logger.error(msg)
        elif level == 'CRITICAL':
            my_logger.critical(msg)

        my_logger.removeHandler(ch)  # 清除缓存
        my_logger.removeHandler(fh)

    def debug(self, msg):
        self.my_log('DEBUG', msg)

    def info(self, msg):
        self.my_log('INFO', msg)

    def warning(self, msg):
        self.my_log('WARNING', msg)

    def error(self, msg):
        self.my_log('ERROR', msg)

    def critical(self, msg):
        self.my_log('CRITICAL', msg)
